/**
 * 给定5个权值分别对应ABCDE五个字母。
 * 一共可以存在31种取法。按权值和从大到小的顺序将所有取法输出。
 * 用5个二进制位表示选还是不选。然后排个序即可。
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;

using Real = long double;
using llt = long long;
using vi = vector<int>;
using vll = vector<llt>;
using pii = pair<int, int>;
using pll = pair<llt, llt>;
using i128 = __int128_t;

const string S = "ABCDE";
vi A;
vi Score(5, 0);
int N = 5;

int f(int status){
    int ans = 0;
    for(int i=0;i<N;++i){
        if((1 << i) & status){
            ans += Score[i];
        }
    }
    return ans;
}

string g(int status){
    string ans;
    for(int i=0;i<N;++i){
        if((1 << i) & status){
            ans += (char)('A' + i);
        }
    }
    return ans;
}

void work(){
    for(int i=1;i<(1<<5);++i) A.emplace_back(i);
    for(auto & i : Score) cin >> i;
    sort(A.begin(), A.end(), [&](int u, int v)->bool{
        int iu = f(u), iv = f(v);
        if(iu != iv) return iu > iv;
        return g(u) < g(v);
    });
    for(auto i : A) cout << g(i) << endl;
    return;

}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
    int nofkase = 1;
	// cin >> nofkase;
	while(nofkase--) work();
	return 0;
}